package com.pig4cloud.pigx.user.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 用户模块ApiKey枚举
 *
 * @since 2022/8/16 19:09
 */
public enum UserApiKeyEnum {
	;

	/**
	 * 权限（none无权限、read读取、transfer划转、contract合约、withdrawal提现）
	 */
	@Getter
	@AllArgsConstructor
	public enum Permission {
		/**
		 * none 无权限
		 */
		NONE("无权限", "none"),
		/**
		 * read 读取
		 */
		READ("读取", "read"),
		/**
		 * transfer 划转
		 */
		TRANSFER("划转", "transfer"),
		/**
		 * contract 合约
		 */
		CONTRACT("合约", "contract"),
		/**
		 * withdrawal 提现
		 */
		WITHDRAWAL("提现", "withdrawal");

		private final String name;
		private final String value;

		/**
		 * 根据name查找对应value
		 *
		 * @param name 枚举名称
		 * @return java.lang.String
		 * @since 2021/11/14
		 */
		public static String findValue(String name) {
			for (Permission item : values()) {
				if (item.getName().equals(name)) {
					return item.getValue();
				}
			}

			return null;
		}

		/**
		 * 根据value查找对应的name
		 *
		 * @param value 枚举值
		 * @return java.lang.String
		 * @since 2021/11/14
		 */
		public static String findName(String value) {
			for (Permission item : values()) {
				if (item.getValue().equals(value)) {
					return item.getName();
				}
			}

			return null;
		}
	}

	/**
	 * 状态（0正常、1封禁）
	 */
	@Getter
	@AllArgsConstructor
	public enum Status {
		/**
		 * 0 正常
		 */
		NORMAL("正常", "0"),
		/**
		 * 1 封禁
		 */
		LOCK("封禁", "1");

		private final String name;
		private final String value;

		/**
		 * 根据name查找对应value
		 *
		 * @param name 枚举名称
		 * @return java.lang.String
		 * @since 2021/11/14
		 */
		public static String findValue(String name) {
			for (Status item : values()) {
				if (item.getName().equals(name)) {
					return item.getValue();
				}
			}

			return null;
		}

		/**
		 * 根据value查找对应的name
		 *
		 * @param value 枚举值
		 * @return java.lang.String
		 * @since 2021/11/14
		 */
		public static String findName(String value) {
			for (Status item : values()) {
				if (item.getValue().equals(value)) {
					return item.getName();
				}
			}

			return null;
		}
	}
}
